Багнулся заголовок карты
Если есть hex редактор, то открой и поменяй вручную
Или пробуй пересохранять карту в другом редакторе, если такое возможно
До:
После:
Таким способом можно менять название карты в списке
После строки идет 0x00 типа строка заканчивается
Далее идут байты 7A FC 00 04, тупо выделяешь ctrl+x
Потом в поле ввода символов пишешь что тебе нужно, ищешь в байтах окончание строки 0x00 и после него вставляешь то что ты ранее вырезал Звучит сложновато - но это очень легко
bifurcated, все условия истины. Это сделано специально, но глупо. Если бы не было инверсии, то нам бы не удалось узнать бы. Если бы одно из них вернуло истину, то действие оборвало, и мы бы не узнали об том, истинны ли нижние условия. Могли бы сразу написать and, но близзард сделали так из-за гуи. Там каждое условие - отдельная функция, и их как то надо было вместе слепить как пример, нужно проверить 10 солдат в роте на трезвость, одного проверяем, второго проверяем и так далее. Если попадется один, то дальше нет смысла проверять, так как вся рота будет наказана. Это как со сборной России. Если все норм, значит они чисты
Snak061, если возникла необходимость в том что не нужно значит у тебя не правильная архитектура
вывод: меняй архитектуру
ну или иди в другое место и там пытайся строить небоскрёбы из картона
у нас тут используют только проверенные стройматериалы
ответ на твой вопрос - НЕТ
А что не понятного? Крашится при уничтожении базы красного, значит перелопать код, который отсится к базе или вообще к красному игроку хоть как-то. Что сложного то?
у мертвого юнита изменился уровень ауры, вот и упало. никогда не меняй уровни способностей у мертвых юнитов, жди их возрождения
Даже вон видно айди ASc4
Возможно "канал" так же имеет отличную от остальных абилок структуру
Рабочий вариант
function StartAbilityCD takes unit whichUnit, integer abilityId returns boolean
local integer pAbility = 0
local real cd = GetAbilityCD(abilityId, GetPlayerId(GetOwningPlayer(whichUnit))+1)
if whichUnit == null or GetUnitAbilityLevel( whichUnit, abilityId ) < 1 or cd == 0.00 then
return false
endif
set pAbility = GetUnitAbility(whichUnit, abilityId)
if pAbility < 1 then
return false
else
if RMem(pAbility+0x134)==-1 and RMem(pAbility+0x138)==-1 then
call WMem(pAbility+0x134,0)
call WMem(pAbility+0x138,0)
endif
set Memory[pReserverdIntArg1 / 4] = mR2I(cd)
call CallThisCallWith2Args( pStartAbilityCD, pAbility, pReserverdIntArg1 )
return IsAbilityOnCooldown( pAbility )
endif
return false
endfunction
Но ведь сами по себе ошибки не происходят.
Причина подобного это А) - невнимательность либо твоя либо автора В) - программное обеспечение
Что бы в дальнейшем все было окей, просто сначала потести карту полностью что бы знать что и как должно быть, а потом вноси изменения, будь внимательней.
Еще советую связаться с автором и поговорить с ним об этой проблеме, или запросить у него еще 1 исходник да бы сверЯться с ним.
У модели не выбрано текстурка которая отвечает за ...я забыл как это называется. Аля погребального огня или что-то того. Оказалось трём материалам не дали текстур, я поправил. Сначала проверь работает ли в игре, а потом смело меняй с заменой у себя в папке.
Простыми способами никак, только хаками. Для начинающих это будет сложно, проще дать классификацию здания и добавить 150000 хп, и тогда хп не не будет видно с маной так же, но у этого способа много изьянов.
Смотри карту: xgm.guru/files/100/219921/comments/408338/0.w3x
Там для героев созданы их копии с другой моделью и нестандартные способности на основе способности Тёмный, которая заменяет юнита на указанного другого. Такой вариант не меняет имя героя, порядок предметов в инвентаре, кулдаун на предметах и способностях, но что-то упоминали ранее о возможных глюках с наложенными заклинаниями. Триггерно при использовании способности не на иллюзии героя добавляем ему нестандартную способность нужного типа.
Вариант с заменой юнита, примерно как ты описал, приведёт к сбросу имени, опыта, способностей, кулдаунов, предметов и заклинаний.
Вариантом морфа героя через руны не умею пользоваться.
Вариант с заменой текстуры персонажа через способность Вырвать дерево требует замены текстур деревьев в карте, а это плохо, так как героев много. Ещё это подразумевает умение работать с 3D-редакторами, которого, как предполагаю, у тебя нет.
Я припоминаю как сталкивался с таким. Скорее всего это не лечится. Можно попробовать создавать даммика на месте здания и заставлять его использовать заклинание. Или даже полностью самому написать спелл - он довольно прост.
Если я правильно понял, то у тебя не отображается требуемая анимация на кастующем юните? Если он один и это герой, то ничего не мешает тебе заставить его делать тригерно, а так же вешать и удалять на нём эффект, пока он находится под действием баффа (своего же), ну или какую-нибудь другую, например:
"Боевая единица завершает применение способности"
"Способность = ололо_алала"
"обнуляешь переменную с эффектом"
Не берите вы эти ульты для основы своих скиллов, они сделаны через одно место лиж бы работали в капмании, а там дальше хоть потоп.
Сделайте заклинание из канала, а юнитов вокруг делайте неуязвимыми.
Я припоминаю как сталкивался с таким. Скорее всего это не лечится. Можно попробовать создавать даммика на месте здания и заставлять его использовать заклинание. Или даже полностью самому написать спелл - он довольно прост.
Не берите вы эти ульты для основы своих скиллов, они сделаны через одно место лиж бы работали в капмании, а там дальше хоть потоп.
Сделайте заклинание из канала, а юнитов вокруг делайте неуязвимыми.
Сделать свою способность на основе Канала, настроить применение на точку. При событии каста создавать юнитов в точке каста. Все необходимое есть в статьях ( тут и тут).
от точки, которая создается, не используется, но удаляется
пика группы юнитов, которые все суммарно сколько их на карте нанесут бедной цели урон
и до атакованного юнита, которого вообще здесь не может быть)
что по сути, так я хз как можно прозевать "Цель способности", или как оно у вас называется в русифицированных триггерах. на стандартной версии это target of ability being cast
цикл здесь скорее всего не нужен, если конечно только смысл действительно в том что бы брать всех огров на карте и наносить цели урон.
Extremator, там вроде граффика маг или граффика цель пашут, в доте у тайдхантера пока он был с пассивкой, былл эффект на задетых врагов. Старую опен доту в помощь.
FabulousTiger, большенству людей сложно влиться в чужой проект если тот абсолютно не отвечает некоторым критериям либо человеку может просто не нравится задумка. И это далеко не та ситуация когда нужно проглотить свое негодование, уровень роботы такого человека будет напрямую зависеть от того насколько ему нравится проект. KaneThaumaturge, твоя скорость изучения JASS будет напрямую зависеть от того насколько ты в это захочешь втянуться. Правда должен предупредить что есть люди которые просто не приспособлены к тому что-бы понять програмирование в его ярчайшем проявлении, такие люди обычно при разработке проекта опираются на то что умею лучше всего.
Я из опыта скажу что: есть некоторые вещи которые возможно создать только при помощи JASS, но реализацию большенства идей можно выполнить при помощи GUI. Покопайся в чужих наработка пойми что ты хочешь и что можешь использовать из предоставленного тебе и вперед делать проект.
это разные функции, локалку сделали в одной, а в другой ее записываете. это как если бы вы поставили дома у себя холодильник, потом пришли к соседу и ищете свой холодильник что бы положить туда яйца
Потому что несуществующая модель и невидимая вроде по-разному обрабатываются.
одинаково
короче, нашел решение проблемы
проблема в том, что в варкрафте кое какие криворукие программисты забабахали офигенную логику освещения , из-за которых фильтры оверлея берут за основу освещение в точке x=0. y=0. z=0. карты, если там нет освещения значит фильтр думает что и он тоже должен без освещения, решение данной проблемы является расположение модели с источником освещения по координатам в точном центре карты (включая z) и виженом для игрока в данной точке
оригинал темы с решением проблемы, а так же тест карта с моделью освещения по ссылке
Ну собственно это такая способность 'Aspb' - книга заклинаний, способность одноименного предмета...
Собственно способность 'Aspb' -spellbook имеет поле 'Ability List' как у юнитов, в котором можно указывать другие способности.
Что нам нужно:
Скопировать способность 'Aspb' - книга заклианий и изменить название на желаемое, удалить иконку и обнулить все параметры ( мин и макс заклинаний ставим на 1, список способностей - тут очищаем весь список и добавлем туда интересующую вас способность, в вашем случае баш...)
Нужно запретить эту способность для изучения игроком триггерно, с помощью SetPlayerAbilityAvalible (в гуях не помню как, там в разделе игрок есть эта функция)
Собствнно добавлем\удаляем нашу способность на основе "спеллбука" когда захотим, она не будет отображаться и занимать место на карте команд.
Примечание:
Запрещенные способности загружаются в память в полном обьеме, не смотря на то что их не видит игрок, поэтому удаляйте все описания, эффекты, иконки, параметры которые отвечают за визуализацию, так вы увеличите скорость загрузки вашей карты, хоть и не намного.
Все должно действовать, постоянно именно так и делаю. Триггер в студию.
P. S. Только одна оговорка: на всякий случай будет лучше, если способность, даваемая даммику, заранее будет присутствовать у какого-нибудь юнита на карте (можно нейтрального и/или не способного её скастануть), иначе иногда не исключены ситуации, когда даммик просто не кастует добавленную ему способность вообще (зависимость определить не удалось, абсолютно в одной и той же уже сохраненной и оптимизированной карте может кастовать, а может не кастовать - если не стал кастовать эту абилу в первый раз, то и всю игру - т. е. весь конкретный запуск конкретно этой карты - уже не станет, но добавлением абилы заранее нейтральному зданию, т. е. прелоадом, лечится надёжно).
Идея!
В модели один слой, а можно выделить ветви и на новый слой их, а там уже можешь делать смещение без коверкания наложения текстуры.
Что-то с моделью этой, не получается провернуть указанную операцию, постоянно вылетает ошибка.
Maxsavin, я каждой карте из кампаний даю свой кэш, чтобы не перепуталось ничего.
Не знаю, что получилось бы, сделай я один кэш-файл на всю кампу и грузи карты потом не по порядку. Проверять не буду. Кампания - это пак карт.
Horfey, во-первых, как верно предположил biridius, проблема в несовпадении равкодов. Чтобы увидеть равкоды в Редакторе объектов, нужно нажать Ctrl+D. Равкоды нестандартных данных обычно представляют букву и три цифры в самом начале названия объекта. Чтобы обойти проблему с ними, нужно либо создавать объекты в Редакторе кампаний, что на вкладке Нестандартные данные, либо редактировать стандартных юнитов.
Во-вторых, в кэше сохраняется много лишнего, а потом ещё неправильно загружается. Например, сохраняется smarts2, а загружается smarts. Как предполагаю, сохранение атрибутов героя необходимо при наличии в главе книг силы/ловкости/интеллекта, но в главе их нет, то есть и сохранять их не требуется, так как атрибуты примут свои значения в соответствии с опытом героя. По-хорошему, должно было быть так:
Крестьянин берёт лук или молот и становится бойцом, которому назначается переменная Daran;
Боец уничтожает тёмную башню и сохраняется в кэш, как Daran в категории Hero;
На следующей карте из кэша восстанавливается Daran из Hero, которому присваивается переменная Daran. Этот герой будет иметь опыт, способности и предметы из предыдущей главы, если они будут иметь правильные равкоды и там, и там.
В-третьих, чтобы игрок мог читать субтитры, если они у него в настройках отключены, есть действие Спецэффекты - Subtitle Display Override.
P. S. Сначала думал просто копировать из редактора объектов одной карты героев с их равкодами в другую, но их равкоды были заняты, потому копируемым юнитам назначался другой равкод. В таком случае мне бы потребовалось менять на карте персонажей на таких же, но с иным равкодом, а это потребовало бы досконального изучения триггеров ради корректной их работы, чего делать как-то не особо охота.
Варианты есть, но это будет сложновато. Стандартный gamecache не сохраняется на диск игрока в мультиплеере, тут нужны системы вроде datamanager, а так же почитать статьи про GetLocalPlayer() и о синхронизации данных: GetLocalPlayer Синхронизация
Еще вопросы?
Если при поиске ресурсов к адресной строке добавить ?sortfield=datelineasc
то порядок показа по дате будет "от старых к новым"
остальные фильтры пока недоступны
Пример: xgm.guru/p/wc3/resources?sortfield=datelineasc
Привет. Воспользуйся функцией "Написать менеджеру" или кнопку [!] или обратись напрямую к любому админу или менеджеру и перечисли что хочешь удалить.
Если необходимо удалить проект - обращайся напрямую к админу. Менеджеры не могут удалять проекты которые уже прошли публикацию. Если необходимо удалить ресурс - достаточно обратиться к менеджеру.
ScopteRectuS, Я решил проблему там баг, если указать регион как точку назначения портала, то с ним триггеры перестают работать. Я просто указал другой регион. biridius, Ну это альфа версия, за 5 мин сделал, знаю об утечках.
Ты в условиях установил каждое здание в итоге выходит так что чтобы тригер сработал нужно завершить улучшение во всех этих зданиях сделай для каждого по отдельности либо через если/тогда/иначе.
А группы в массиве CreepsGroup созданы? Нужно либо создавать группы при инициализации, проходясь циклом по массиву, либо в константах указать "размер" массива, и тогда они будут сами созданы. То есть нужно 12 групп -- ставишь размер 12, группы будут созданы в ячейках с 0 по 11.
8gabriel8
я переписал всё на jass - вроде работает как надо
MUI как побочный эффект от хештаблицы и таймера
проверь как работает, а то я сутками не спал
Я там если что поменял Set Life на UnitDamageTarget, чтобы золото капало с убитых гноллов
И если нужно будет поменять способность на другую - то просто в константе passiveAbility поменять равкод
и ещё я там расставил комментарии где можно редактировать волны
Поставил расстояние 256 там, где вычисляются полярные координаты - всё заработало. То есть слишком маленькие значения нельзя, как 64, всё ясно. Тема закрыта.
Вот как должен выглядеть полностью правильный триггер без утечек, единственная утечка создастся только при первом использовании, это я так понял переменная группы, ее обнулять нельзя, иначе скил будет работать только раз.
PhysCraft, он уже пробовал этот метод. Не подошёл из-за белых портретов. Steal nerves, извини, обманул тебя. Чтобы сделать вынесение в отдельную поверхность, надо сначала удвоить вершины. Но только почему-то нормально не работает, часть вершин не удваивается.
Сейчас посмотрю, как с анимацией текстур работал.
А ведь ты не сделал копию анимаций, просто продублировал имеющиеся, дав им название с тэгом. Это не даст желаемого.
Извини, но пока путного не получается. Может быть опосля придёт умная мысля.
По идее всё равно надо делать реальную копию анимационного ряда, а не просто дать новое название тем же кадрам. Может быть ты в процессе копирования кадров согласишься, что легче создать кучу крестьянок с новыми моделями в РО и триггерно их заменять, чем одну почти такую же тяжёлую за счёт анимаций модель с тэгами. При этом не факт, что у неё с портретом будет порядок.
Заходить в карту чтобы скоротать время, пока друзья ещё не пришли/ ещё играют (в ту катку, с которой ты вылетел/крашнулся)
Цель от данной игры:
(большинство рпг)
*1) Попытаться выбить что-то, что падает с одноразового босса, и свалить на рмк
*2) Помочь другу попытаться выбить что-то, что падает с в пункте 1
(большинство других карт)//(Те же тролли и эльфы) [Больше психология и нежелание играть в неравных условиях]
*1) Этот эльф абузит что-либо!
*2) Эти эльфы собрались в войсе и абузят одну стенку на четверых! Делал так вчера :D
*3) Этот тролль играет с мх и всегда сразу находит любого эльфа на большой карте!
Попытка поиграть во что-то, оборачивается чем-то плохим:
*1) Выбивается инэт/свет/ потолок падает на игрока
*2) Вырубается что-то из оборудования, в следствии чего пк зависает/уходит в ребут
*3) Крашит/Десинкает из вара
*4) Винда что-то непонятное выводит (Та же нехватка озу/бэды на харде)
Определённый сегмент игроков, зовущийся троллями которые что и делают что по кд оскорбляют других, и подпалив игроков просто ливают.
Отдельно насчёт игроков: цифры = пункты выше из шапки
Пункты 1, 2, 5, 6, 7, 8, 9, 10, 12 относятся больше к тому, что игроки с "ини" показывают друг другу зубы и соблюдают этот стиль общения на протяжении всей катки
Пункты 8,12 относятся к тем, с чем можно смириться и продолжить играть в мапу
Пункт 6 - для "Соло" карт, которые просто нельзя пройти в одного, не имея друзей ,что мной расценивается как просто потеря времени
Идеальной карты нет и небудет - вы не сможете совместить абсолютно все жанры, которые нравятся комьюнити - Одновременно ТД и РПГ я ещё не видел, не зря это разные жанры. Если она и будет, то все наткнутся на лимит в 12 слотов, с которых гарена наврядли когда выйдет.
Нашёл систему, где звук передаётся в таймер, который истекает через 0 секунд. В результате один и тот же звук может проигрываться несколько раз без всяких проблем. В инетике пишут мол это такой баг движка.
вариант №1 - не нулить переменные, оставляя утечки номеров хендлов. это безопасно, да, если знаешь, что делаешь.
№2 - ловить UNIT_DEATH и чистить за ним
orc01, есть событие EventUnitsInRange, делаешь триггер, а при постройки башни добавляешь в него это событие для каждой башни, в условиях проверяешь что тот кто подошел нужного тебе типа юнит, ну действия думаю проблем не вызовут...
1)Нужно ли при создании на джассе в конце обнулять/удалять что-то как при создании на ГУИ типо set u = null и т.д.?
Да нужно, но далеко не все. Чекни статьи, там про это расписано подробно.
2)Как видно на скрине юниту даются способности на 10 сек, можно ли в одной строчке это как то написать, а не писать каждый скилл в новой строке? Попытался сделать через , выдало ошибку.
Нет, только по одному. И TriggerSleepAction я бы использовать не стал, вместо них я бы заюзал таймеры.
3)Слышал про при конвертации в текст остаются пару лишних строк в триггере, абсолютно ненужные я удалил(Которые были при создании на ГУИ, скрин 2), нужно ли еще что-то удалять?
S2I принимает строку в качестве параметра и никак её не изменяет
с чего вдруг он должен создавать новые строки?
I2S создаёт временную строку
если в таблице есть строка равная временной по хэшу то он возвращает строку из таблицы
если в таблице строки нету то он добавляет нашу временную строку в таблицу
т.е. обычный алгоритм хэширования
name_to_trigger(string name) {
for (integer index = 0; index < name_array_index; index++) {
if name_array[index] == name {
return trigger_array[index];
}
}
}
Затем регистрируем все триггеры через register_trigger.
А после этого думаем, реально ли у нас столько абилок, что простая последовательность if name == "my_ability" then RunTrigger(my_ability) хуже этого решения
А касательно остальной части, если UnitUserData нигде не используется, создаешь массив юнитов и отрядов. Массив юнитов забиваешь своими капитанами. В UnitUserData капитана пихаешь его порядковый номер в массиве. Создаешь группу юнитов для этого капитана.
Добавление через каст способности.
Я бы делал через 2 разные абилки с одной и той же позицией в интерфейсе. Пока нужный тебе юнит не является частью отряда - у него таргетная абилка при касте которой на капитана он добавляется в группу соответствующего капитана и получает 2ю абилку взамен первой.
Касательно выделения этих пехотинцев - можно намутить что-то с передачей контроля или создать триггер, который будет снимать выделение с юнитов у которых есть 2я абилка. Если ты хочешь чтобы по одиночке можно было выделять пехотинцев - можешь создать переменную для каждого игрока с капитанами, куда будет просто записываться последний выбранный юнит. При снятии выделения - проверять не выбран ли этот же юнит, в случае чего не снимать выделение. Правда не уверен будет ли корректно работать :> В крайнем случае - будет работать в три клика вместо двух. Если я не ошибаюсь.
Касательно поведения этих пехотинцев - что-то реально стоящее сделать сложно. Возможно, но мне не с руки все расписывать :> Простейший вариант - приказывать пехотинцам после добавления в группу следовать за капитаном.
Добавление через атаку капитана
Триггер, проверяющий что капитан получил урон или атакован, как угодно. Далее любым способом проверяешь есть ли в группе этого капитана юниты. Если нет - выбираешь всех пехотинцев N радиусе, добавляешь в отряд, заменяешь абилку/либо просто приказываешь кастануть в капитана первую абилку.
native UnitHasItem takes unit whichUnit, item whichItem returns boolean
function UnitHasItemOfTypeBJ takes unit whichUnit, integer itemId returns boolean
return GetInventoryIndexOfItemTypeBJ(whichUnit, itemId) > 0
endfunction
// Данная функция утечна, так как indexItem не обнуляется
function GetInventoryIndexOfItemTypeBJ takes unit whichUnit, integer itemId returns integer
local integer index
local item indexItem
set index = 0
loop
set indexItem = UnitItemInSlot(whichUnit, index)
if (indexItem != null) and (GetItemTypeId(indexItem) == itemId) then
return index + 1
endif
set index = index + 1
exitwhen index >= bj_MAX_INVENTORY
endloop
return 0
endfunction
function UnitHasItemOfType takes unit whichUnit, integer itemId returns boolean
local integer index = 0
loop
if GetItemTypeId(UnitItemInSlot(whichUnit, index)) == itemId then
return true
endif
set index = index + 1
exitwhen index == bj_MAX_INVENTORY
endloop
return false
endfunction
// Можно ещё так написать
function UnitHasItemOfType takes unit whichUnit, integer itemId returns boolean
local integer index = 0
loop
exitwhen GetItemTypeId(UnitItemInSlot(whichUnit, index)) == itemId
set index = index + 1
exitwhen index == bj_MAX_INVENTORY
endloop
return index < bj_MAX_INVENTORY
endfunction
» WarCraft 3 / Название
» WarCraft 3 / Есть ли такое условие?
» WarCraft 3 / Краш
» WarCraft 3 / StartAbilityCD(integer, real)
» WarCraft 3 / Редактор кампания - проверка карты
» WarCraft 3 / модель не работает
» WarCraft 3 / хп и мп бары
» WarCraft 3 / Модели
» WarCraft 3 / Заговор Неуязвимости
» WarCraft 3 / Изменение юнита
» WarCraft 3 / Цель способности
» WarCraft 3 / Не могу нормально создать способность...
» WarCraft 3 / Увеличение запаса здоровья героя
» WarCraft 3 / Ошибка.
» WarCraft 3 / Фильтры
» WarCraft 3 / Возможные способности для героя
» WarCraft 3 / По поводу импорта текстур.
» WarCraft 3 / Перенос героя
» Администрация XGM / Ресурс
» WarCraft 3 / Не работает триггер.
» WarCraft 3 / Правка урона
» WarCraft 3 / AdicHelper?
» WarCraft 3 / Хеш-таблица и юнит
» WarCraft 3 / Конвертация в строку
» WarCraft 3 / Спелла нет